#include "dev_buzzer.h"


// 蜂鸣器初始化
void buzzer_init(void) 
{
#ifdef STM32F10X
	GPIO_InitTypeDef GPIO_InitStructure;
	BEEP_RCC_APBx_CMD(BEEP_RCC_APBx, ENABLE);
    
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = BEEP_GPIO_Pin;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(BEEP_GPIOx, &GPIO_InitStructure);
	GPIO_ResetBits(BEEP_GPIOx, BEEP_GPIO_Pin);
    //GPIO_SetBits(BEEP_GPIOx, BEEP_GPIO_Pin);
#endif
}

// 蜂鸣器打开
void buzzer_on(void)
{
    //GPIO_ResetBits(BEEP_GPIOx, BEEP_GPIO_Pin);
    GPIO_SetBits(BEEP_GPIOx, BEEP_GPIO_Pin);
}

// 蜂鸣器关闭
void buzzer_off(void)
{
    GPIO_ResetBits(BEEP_GPIOx, BEEP_GPIO_Pin);
    //GPIO_SetBits(BEEP_GPIOx, BEEP_GPIO_Pin);
}

// 蜂鸣器报警
// cycle：蜂鸣器工作周期
// time：工作周期内响声持续时间
void buzzer_beep(uint16 cycle,uint16 time)
{
    static uint16 t = 0;
    
    if (time > cycle)
    {
        t = 0;
        buzzer_off();
        return;
    }
    ++t;
    if (t < time)       buzzer_on();
    else if (t < cycle) buzzer_off();
    else                t = 0;
}
